// ==UserScript==
// @name         蓝奏云链接转换
// @version      0.1
// @description  将蓝奏云一级域名链接转换为pan.lanzoui.com
// @author       Cursor
// @match        *://*.lanzoub.com/*
// @match        *://*.lanzouc.com/*
// @match        *://*.lanzoud.com/*
// @match        *://*.lanzoue.com/*
// @match        *://*.lanzouf.com/*
// @match        *://*.lanzoug.com/*
// @match        *://*.lanzouh.com/*
// @match        *://*.lanzouj.com/*
// @match        *://*.lanzouk.com/*
// @match        *://*.lanzoul.com/*
// @match        *://*.lanzoum.com/*
// @match        *://*.lanzoun.com/*
// @match        *://*.lanzouo.com/*
// @match        *://*.lanzoup.com/*
// @match        *://*.lanzouq.com/*
// @match        *://*.lanzour.com/*
// @match        *://*.lanzous.com/*
// @match        *://*.lanzout.com/*
// @match        *://*.lanzou.com/*
// @match        *://*.lanzouu.com/*
// @match        *://*.lanzouv.com/*
// @match        *://*.lanzouw.com/*
// @match        *://*.lanzoux.com/*
// @match        *://*.lanzouy.com/*
// @match        *://lanzoub.com/*
// @match        *://lanzouc.com/*
// @match        *://lanzoud.com/*
// @match        *://lanzouf.com/*
// @match        *://lanzoug.com/*
// @match        *://lanzouh.com/*
// @match        *://lanzouj.com/*
// @match        *://lanzouk.com/*
// @match        *://lanzoul.com/*
// @match        *://lanzoum.com/*
// @match        *://lanzoun.com/*
// @match        *://lanzouo.com/*
// @match        *://lanzoup.com/*
// @match        *://lanzouq.com/*
// @match        *://lanzour.com/*
// @match        *://lanzout.com/*
// @match        *://lanzou.com/*
// @match        *://lanzouu.com/*
// @match        *://lanzouv.com/*
// @match        *://lanzouw.com/*
// @match        *://lanzouy.com/*
// @match        *://*/*
// @match        *://*.lanzoui.com/*
// @match        *://lanzoui.com/*
// @grant        none
// @run-at       document-start
// @icon         https://gitee.com/selling-surprises/Greasyfork-Script-repository/raw/main/%E7%BD%91%E7%9B%98/%E8%93%9D%E5%A5%8F%E4%BA%91/lanzou.png
// ==/UserScript==

(function() {
    'use strict';

    // 定义需要重定向的域名
    const targetDomains = [
        'lanzoub.com', 'lanzouc.com', 'lanzoud.com', 'lanzoue.com', 
        'lanzouf.com', 'lanzoug.com', 'lanzouh.com', 'lanzouj.com', 'lanzouk.com', 
        'lanzoul.com', 'lanzoum.com', 'lanzoun.com', 'lanzouo.com', 'lanzoup.com', 
        'lanzouq.com', 'lanzour.com', 'lanzous.com', 'lanzout.com', 'lanzou.com', 
        'lanzouu.com', 'lanzouv.com', 'lanzouw.com', 'lanzoux.com', 'lanzouy.com',
        'lanzoui.com'
    ];

    // 定义需要排除的域名
    const excludeDomains = [
        'ilanzou.com',
        'pan.lanzoui.com'
    ];

    // 检查域名是否在排除列表中
    function isExcluded(hostname) {
        return excludeDomains.some(domain => hostname.includes(domain));
    }

    // 检查当前URL是否需要重定向
    const currentHostname = window.location.hostname;
    
    // 如果在排除列表中，则不进行重定向
    if (isExcluded(currentHostname)) {
        return;
    }
    
    const needsRedirect = targetDomains.some(domain => currentHostname.includes(domain));

    if (needsRedirect) {
        // 获取当前路径
        const path = window.location.pathname + window.location.search + window.location.hash;
        // 构建新URL
        const newUrl = 'https://pan.lanzoui.com' + path;
        // 重定向
        window.location.href = newUrl;
        return;
    }

    // 在页面加载完成后执行
    window.addEventListener('load', function() {
        // 替换页面上所有的蓝奏云链接
        replaceLinks();

        // 监听DOM变化，处理动态加载的内容
        const observer = new MutationObserver(function(mutations) {
            replaceLinks();
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });

    // 替换页面上的链接
    function replaceLinks() {
        // 获取所有的a标签
        const links = document.querySelectorAll('a');

        links.forEach(function(link) {
            const href = link.href;

            // 创建URL对象
            try {
                const url = new URL(href);
                
                // 如果域名在排除列表中，则不替换
                if (isExcluded(url.hostname)) {
                    return;
                }
                
                // 检查链接是否包含任何目标域名
                const needsReplacement = targetDomains.some(domain => url.hostname.includes(domain));

                if (needsReplacement) {
                    // 构建新URL
                    const newUrl = 'https://pan.lanzoui.com' + url.pathname + url.search + url.hash;
                    // 更新链接
                    link.href = newUrl;
                }
            } catch (e) {
                // 忽略无效URL
            }
        });
    }
})();